স্প্রিং বুট ওআরএম-এ Entity এবং Table Mapping ডেটাবেসের টেবিল এবং জাভা অবজেক্টের মধ্যে একটি সংযোগ তৈরি করে। JPA এর মাধ্যমে এটি সহজেই সম্পন্ন করা যায়।
Entity এবং Table Mapping কী?
- Entity: এটি জাভার একটি ক্লাস, যা ডেটাবেসের একটি টেবিলকে ম্যাপ করে। JPA অ্যানোটেশন দিয়ে Entity তৈরি করা হয়।
- Table Mapping: ডিফল্টভাবে JPA Entity ক্লাসের নাম টেবিল নাম হিসাবে নেয়। তবে কাস্টম টেবিল নাম ব্যবহার করতে চাইলে
@Tableঅ্যানোটেশন ব্যবহার করা হয়।
উদাহরণ: Entity এবং Table Mapping
নিচে একটি উদাহরণ দেওয়া হলো যেখানে Product নামে একটি Entity তৈরি করা হয়েছে এবং এটি ডেটাবেসের একটি টেবিলের সঙ্গে ম্যাপ করা হয়েছে।
Entity তৈরি
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
@Entity
@Table(name = "products") // ডেটাবেসের টেবিল নাম কাস্টমাইজ করার জন্য
public class Product {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY) // প্রাইমারি কী অটোমেটিক জেনারেশনের জন্য
private Long id;
private String name;
private double price;
private int quantity;
// Getters and Setters
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public int getQuantity() {
return quantity;
}
public void setQuantity(int quantity) {
this.quantity = quantity;
}
}
Table Mapping ব্যাখ্যা
@Entity: এই অ্যানোটেশন দিয়ে একটি ক্লাসকে JPA Entity হিসেবে চিহ্নিত করা হয়।@Table: টেবিলের কাস্টম নাম দিতে এই অ্যানোটেশন ব্যবহার করা হয়। এখানেproductsনামে টেবিল নির্ধারণ করা হয়েছে।@Id: এটি প্রাইমারি কী চিহ্নিত করে।@GeneratedValue: প্রাইমারি কী অটোমেটিক জেনারেশনের জন্য ব্যবহার করা হয়। এখানেGenerationType.IDENTITYব্যবহৃত হয়েছে।- ফিল্ডগুলো:
name,price, এবংquantityটেবিলের কলাম হিসাবে ম্যাপ করা হয়েছে।
Spring Data JPA Repository উদাহরণ
এই Entity এর জন্য একটি Repository ইন্টারফেস তৈরি করা যায়:
import org.springframework.data.jpa.repository.JpaRepository;
public interface ProductRepository extends JpaRepository<Product, Long> {
// কাস্টম কেরি লিখতে হলে এখানে মেথড সংজ্ঞা দেওয়া যাবে
Product findByName(String name);
}
ডাটাবেস কনফিগারেশন
application.properties ফাইলে ডাটাবেসের কনফিগারেশন লিখতে হয়:
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=root
spring.jpa.hibernate.ddl-auto=update
উদাহরণ: ডেটা সেভ এবং ফেচ করা
Controller উদাহরণ:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/products")
public class ProductController {
@Autowired
private ProductRepository productRepository;
@PostMapping
public Product createProduct(@RequestBody Product product) {
return productRepository.save(product);
}
@GetMapping
public List<Product> getAllProducts() {
return productRepository.findAll();
}
}
টেবিলের কাঠামো (SQL)
উপরের উদাহরণ অনুযায়ী products টেবিলের কাঠামো হবে:
CREATE TABLE products (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255),
price DOUBLE,
quantity INT
);
এই Entity এবং Table Mapping ব্যবহার করে স্প্রিং বুট অ্যাপ্লিকেশনের ডেটাবেস পরিচালনা করা সহজ এবং কার্যকর হয়। এটি ডেটাবেস-সংক্রান্ত কাজকে আরও সংক্ষিপ্ত ও গঠনমূলক করে তোলে।
Read more